モジュール詳細:赤色暗号

赤を眺めることは、このモジュール上ではごく普通だ。

モジュールは、3つのディスプレー、キーボード、2つの矢印、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の矢印を押すと、次のページに移動できる。左の矢印を押すと前のページに移動できる。ページは全部で2ページある。

ページ1には、上のディスプレーに6文字の暗号化された単語、真ん中のディスプレーに6文字の文字列が表示される。暗号化された単語に「J」が含まれている場合、同じ位置にある真ん中のディスプレーの文字に置き換える。3ステップ完了後、その文字を再び「J」に戻す。

ページ2には、3つのディスプレーすべてに単語が表示される。上の単語はキーワード1、真ん中の単語はキーワード2、下の単語はキーワード3になる。

以下のルールに従って単語を解読する。

ステップ1:プレイフェア暗号

このステップでは、キーワード1を使用して1つ目の行列を作成する。

作成するには、まずJがある場合はそれをIに変換し、重複する英字の2文字目以降を削除する。それから、アルファベット全体の文字列(Jを除外)を取得し、キーワードに表示された英字を削除する。

シリアルナンバーの最初の数字が奇数の場合、キーワードの末尾にアルファベットの文字列を配置する。そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。

長さが25の文字列を取得したら、それを5×5の行列の形に配置する。

暗号化された文字列を2つずつのペアに分割し、各ペアについて以下の手順を実行する。

  • 2つの英字が全く同じ場合、その英字を保持する。
  • そうでない場合、その英字が行列の同じ行に存在するなら、その左隣にある英字にペアの英字を置き換える。段の端はループする。
  • そうでない場合、その英字が行列の同じ列に存在するなら、その真上にある英字にペアの英字を置き換える。列の端はループする。
  • そうでない場合、その英字と同じ行にあり、ペアのもう一方の英字と同じ列にある英字にそれぞれ置き換える。

結果の文字列が、新たな暗号化された単語となる。

暗号化された単語:PXVEYW キーワード1:NOBLES
シリアルナンバーの最初の数字:2
キー1:ACDFGHIKMPQRTUVWXYZNOBLES

ACDFG
HIKMP
QRTUV
WXYZN
OBLES

PX -> IN
VE -> US
YW -> XN
新たな暗号化された単語:INSUXN

ステップ2:共役行列分割

このステップでは2つの行列が必要となる。1つ目の行列はステップ1で作成したものである。2つ目の行列はキーワード2を使用して作成する。

1つ目の行列と同様に、キーワード2にJがある場合はそれをIに変換し、重複する英字の2文字目以降を削除する。それから、アルファベット全体の文字列(Jを除外)を取得し、キーワードに表示された英字を削除する。

シリアルナンバーの二番目の数字が偶数の場合、キーワードの末尾にアルファベットの文字列を配置する。そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。

長さが25の文字列を取得したら、それを5×5の行列の形に配置する。

これで、2つの行列を取得できるはずである。2つの行列の上、左、右に1から5の番号を振る。

暗号化された単語を使い、各英字について、2つ目の行列から行と列の数字の組を見つけ、6組の数字のペアを得る。次に、4番目から6番目の数字のペアを取り出し、1番目から3番目の数字のペアの下に配置する。最後に、上から下へ、左から右へと数字を読み、新しい6組の数字のペアを得る。これらの数字を1番目の行列の行/列の数字として使用し、新たな暗号化された単語を獲得する。

暗号化された単語:INUSXN キーワード2:GALLON
シリアルナンバーの二番目の数字:2
キー2:GALONBCDEFHIKMPQRSTUVWXYZ

12345|12345
1ACDFG|GALON1
2HIKMP|BCDEF2
3QRTUV|HIKMP3
4WXYZN|QRSTU4
5OBLES|VWXYZ5

I -> 32
N -> 15
U -> 45
S -> 43
X -> 53
N -> 15

321545
435315

34 -> U
23 -> K
15 -> G
53 -> L
41 -> W
55 -> S
新たな暗号化された単語:UKGLWS

ステップ3:三枡暗号

このステップでは3つの行列が必要となる。1つ目と2つ目の行列は先程作成したものである。3つ目の行列はキーワード3を使用して行列1や行列2と同様に作成する。

シリアルナンバーの最後の数字が奇数の場合、キーワードの末尾にアルファベットの文字列を配置する。そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。

長さが25の文字列を取得したら、それを5×5の行列の形に配置する。これで、3つの行列を取得できるはずである。

暗号化された単語を3組の英字のペアに分割する。各ペアに対して、以下の処理を行う。

  • 最初の英字を3つ目の行列から探す。その行は1つ目の行列の行番号となり、その列は2つ目の行列の列番号となる。
  • 次に、2番目の英字を3つ目の行列から探す。その行は2つ目の行列の行番号となり、その列は1つ目の行列の列番号となる。
  • 最後に、1つ目の行列から取得した英字を最初の英字とし、2つ目の行列から取得した英字を2番目の英字とする。

最初にJであった英字をJに置き換えることで、復号された単語を取得できることに注意すること。

暗号化された単語:UKGLWS キーワード3:JUNK
シリアルナンバーの最後の数字:9
キー3:IUNKABCDEFGHLMOPQRSTVWXYZ

ACDFG|GALON|IUNKA
HIKMP|BCDEF|BCDEF
QRTUV|HIKMP|GHLMO
WXYZN|QRSTU|PQRST
OBLES|VWXYZ|VWXYZ

UK -> FA
GL -> TH
WS -> ER
復号された単語:FATHER

復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの矢印をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。